


    <template>
        <el-drawer :title="!dataForm.id ? '新建' : '编辑'" :visible.sync="visible"
                   :wrapperClosable="false" size="800px" append-to-body
                   class="JNPF-common-drawer">
        <div class="JNPF-flex-main">
        <div class="dynamicForm ">
    <el-form ref="formRef" :model="dataForm" :rules="dataRule" size="mini" label-width="100px" label-position="top" >
    <template v-if="!loading">
        <!-- 具体表单 -->
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="所属行业"   prop="industry" >
        <JnpfInput   v-model="dataForm.industry" @change="changeData('industry',-1)" 
 placeholder="请输入"  clearable  :style='{"width":"100%"}'>
    </JnpfInput>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="具体行业"   prop="specificIndustry" >
        <JnpfInput   v-model="dataForm.specificIndustry" @change="changeData('specificIndustry',-1)" 
 placeholder="请输入"  clearable  :style='{"width":"100%"}'>
    </JnpfInput>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="规上企业"   prop="enterpriseScaleRoute" >
        <JnpfInput   v-model="dataForm.enterpriseScaleRoute" @change="changeData('enterpriseScaleRoute',-1)" 
 placeholder="请输入"  clearable  :style='{"width":"100%"}'>
    </JnpfInput>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="企业规模"   prop="enterpriseScale" >
        <JnpfInput   v-model="dataForm.enterpriseScale" @change="changeData('enterpriseScale',-1)" 
 placeholder="请输入"  clearable  :style='{"width":"100%"}'>
    </JnpfInput>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="数字化转型自评测等级"   prop="digitalTransformationRating" >
        <JnpfInput   v-model="dataForm.digitalTransformationRating" @change="changeData('digitalTransformationRating',-1)" 
 placeholder="请输入"  clearable  :style='{"width":"100%"}'>
    </JnpfInput>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="是否正在实施数字化转型"   prop="digitalTransformationConsultingServices" >
        <JnpfInput   v-model="dataForm.digitalTransformationConsultingServices" @change="changeData('digitalTransformationConsultingServices',-1)" 
 placeholder="请输入"  clearable  :style='{"width":"100%"}'>
    </JnpfInput>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="已建成数字化项目类型"   prop="completedDigitalProjectsType" >
        <JnpfSelect   v-model="dataForm.completedDigitalProjectsType" @change="changeData('completedDigitalProjectsType',-1)" 
 placeholder="请选择"  clearable  :style='{"width":"100%"}' :options="completedDigitalProjectsTypeOptions" :props="completedDigitalProjectsTypeProps" >
    </JnpfSelect>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="已建成数字化项目类型其他"   prop="completedDigitalProjectsTypeOther" >
        <JnpfInput   v-model="dataForm.completedDigitalProjectsTypeOther" @change="changeData('completedDigitalProjectsTypeOther',-1)" 
 placeholder="请输入"  clearable  :style='{"width":"100%"}'>
    </JnpfInput>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="希望开展数字化转型的环节"   prop="digitalTransformationPhase" >
        <JnpfSelect   v-model="dataForm.digitalTransformationPhase" @change="changeData('digitalTransformationPhase',-1)" 
 placeholder="请选择"  clearable  :style='{"width":"100%"}' :options="digitalTransformationPhaseOptions" :props="digitalTransformationPhaseProps" >
    </JnpfSelect>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="希望开展数字化转型的环节其他"   prop="otherDigitalTransformationPhase" >
        <JnpfInput   v-model="dataForm.otherDigitalTransformationPhase" @change="changeData('otherDigitalTransformationPhase',-1)" 
 placeholder="请输入"  clearable  :style='{"width":"100%"}'>
    </JnpfInput>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="2024-2025拟投入预算"   prop="digitalTransformationInvestmentBudget" >
        <JnpfInput   v-model="dataForm.digitalTransformationInvestmentBudget" @change="changeData('digitalTransformationInvestmentBudget',-1)" 
 placeholder="请输入"  clearable  :style='{"width":"100%"}'>
    </JnpfInput>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="希望的支持建议"   prop="supportAndAdviceFromServiceProviders" >
        <JnpfSelect   v-model="dataForm.supportAndAdviceFromServiceProviders" @change="changeData('supportAndAdviceFromServiceProviders',-1)" 
 placeholder="请选择"  clearable  :style='{"width":"100%"}' :options="supportAndAdviceFromServiceProvidersOptions" :props="supportAndAdviceFromServiceProvidersProps" >
    </JnpfSelect>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="其他"   prop="supportAndAdviceFromServiceProvidersOther" >
        <JnpfInput   v-model="dataForm.supportAndAdviceFromServiceProvidersOther" @change="changeData('supportAndAdviceFromServiceProvidersOther',-1)" 
 placeholder="请输入"  clearable  :style='{"width":"100%"}'>
    </JnpfInput>
    </jnpf-form-tip-item>
        </el-col>
            <el-col :span="24" >
                <jnpf-form-tip-item>
                    <JnpfText 
 :textStyle='{"color":"#113AEF","font-weight":"bold","text-decoration":"none","font-size":16,"line-height":32,"font-style":"normal","text-align":"left"}' content="服务商登录平台可查看需求详细信息及企业联系方式">
                </JnpfText>
                </jnpf-form-tip-item>
            </el-col>
        <!-- 表单结束 -->
    </template>
    </el-form>
    <SelectDialog v-if="selectDialogVisible" :config="currTableConf" :formData="dataForm"
                  ref="selectDialog" @select="addForSelect" @close="selectDialogVisible=false"/>
    </div>
    <div class="drawer-footer">
                <div class="upAndDown-button" v-if="dataForm.id">
                    <el-button @click="prev" :disabled='prevDis'>
                        {{'上一条'}}
                    </el-button>
                    <el-button @click="next" :disabled='nextDis'>
                        {{'下一条'}}
                    </el-button>
                </div>
            <el-button type="primary" @click="dataFormSubmit(2)" :loading="continueBtnLoading">
                {{!dataForm.id ?'确定并新增':'确定并继续'}}</el-button>
        <el-button @click="visible = false"> 取 消</el-button>
        <el-button type="primary" @click="dataFormSubmit()" :loading="btnLoading"> 确 定</el-button>
    </div>
    </div>
    </el-drawer>
    </template>


<script>
    import request from '@/utils/request'
    import {mapGetters} from "vuex";
    import { getDataInterfaceRes } from '@/api/systemData/dataInterface'
    import { getDictionaryDataSelector } from '@/api/systemData/dictionary'
    import { getDefaultCurrentValueUserId } from '@/api/permission/user'
    import { getDefaultCurrentValueDepartmentId } from '@/api/permission/organize'
    import { getDateDay, getLaterData, getBeforeData, getBeforeTime, getLaterTime } from '@/components/Generator/utils/index.js'
    import { thousandsFormat } from "@/components/Generator/utils/index"
    export default {
        components: { },
        props: [],
        data() {
        return {
            dataFormSubmitType: 0,
            continueBtnLoading: false,
            index: 0,
            prevDis: false,
            nextDis: false,
            allList: [],
            visible: false,
            loading: false,
            btnLoading: false,
            formRef: 'formRef',
            setting:{},
            eventType: '',
            userBoxVisible:false,
            selectDialogVisible: false,
            currTableConf:{},
            dataValueAll:{},
            addTableConf:{
            },
            //可选范围默认值
            ableAll:{
            },
        tableRows:{
        },
            Vmodel:"",
            currVmodel:"",
            dataForm: {
                                industry : undefined,
                                specificIndustry : undefined,
                                enterpriseScaleRoute : undefined,
                                enterpriseScale : undefined,
                                digitalTransformationRating : undefined,
                                digitalTransformationConsultingServices : undefined,
                                    completedDigitalProjectsType : undefined,
                                completedDigitalProjectsTypeOther : undefined,
                                    digitalTransformationPhase : undefined,
                                otherDigitalTransformationPhase : undefined,
                                digitalTransformationInvestmentBudget : undefined,
                                    supportAndAdviceFromServiceProviders : undefined,
                                supportAndAdviceFromServiceProvidersOther : undefined,
                                passYnCity : undefined,
            },
            tableRequiredData: {},
            dataRule:
            {
            },
                            completedDigitalProjectsTypeOptions:[{"fullName":"关键环节机器换人","id":"关键环节机器换人"},{"fullName":"平台+APPs场景改造","id":"平台+APPs场景改造"},{"fullName":"成套自动化（智能化）生产线","id":"成套自动化（智能化）生产线"},{"fullName":"基于标识的产品溯源、供应链协同等应用","id":"基于标识的产品溯源、供应链协同等应用"},{"fullName":"5G+工业互联网/AI等场景应用","id":"5G+工业互联网/AI等场景应用"},{"fullName":"车间级数字化改造","id":"车间级数字化改造"},{"fullName":"工厂级数字化改造","id":"工厂级数字化改造"},{"fullName":"特点环节/企业级/产业链级工业互联网平台","id":"特点环节/企业级/产业链级工业互联网平台"},{"fullName":"其他","id":"0"},{"fullName":"无","id":"无"}],
                            completedDigitalProjectsTypeProps:{"label":"fullName","value":"id"  },
                            digitalTransformationPhaseOptions:[{"fullName":"研发设计","id":"研发设计"},{"fullName":"生产制造","id":"生产制造"},{"fullName":"仓储物流","id":"仓储物流"},{"fullName":"市场营销","id":"市场营销"},{"fullName":"产品/服务","id":"产品/服务"},{"fullName":"供应链管理","id":"供应链管理"},{"fullName":"运营管理（人力、财务、资产管理等）","id":"运营管理（人力、财务、资产管理等）"},{"fullName":"其他","id":"0"}],
                            digitalTransformationPhaseProps:{"label":"fullName","value":"id"  },
                            supportAndAdviceFromServiceProvidersOptions:[{"fullName":"在服务过程中快速响应","id":"在服务过程中快速响应"},{"fullName":"提供性价比高的产品和服务","id":"提供性价比高的产品和服务"},{"fullName":"开展企业数字化改造培训","id":"开展企业数字化改造培训"},{"fullName":"开展企业精益生产培训","id":"开展企业精益生产培训"},{"fullName":"其他","id":"0"}],
                            supportAndAdviceFromServiceProvidersProps:{"label":"fullName","value":"id"  },
            childIndex:-1,
                    isEdit:false,
                    interfaceRes: {
                        industry:[] ,
                        specificIndustry:[] ,
                        enterpriseScaleRoute:[] ,
                        enterpriseScale:[] ,
                        digitalTransformationRating:[] ,
                        digitalTransformationConsultingServices:[] ,
                        completedDigitalProjectsType:[] ,
                        completedDigitalProjectsTypeOther:[] ,
                        digitalTransformationPhase:[] ,
                        otherDigitalTransformationPhase:[] ,
                        digitalTransformationInvestmentBudget:[] ,
                        supportAndAdviceFromServiceProviders:[] ,
                        supportAndAdviceFromServiceProvidersOther:[] ,
                        passYnCity:[] ,
            },
        }
        },
        computed: {
            ...mapGetters(['userInfo'])
        },
        watch: {},
        created() {
            this.dataAll()
            this.initDefaultData()
            this.dataValueAll = JSON.parse(JSON.stringify(this.dataForm))
        },
        mounted() {},
        methods: {
            prev() {
                this.index--
                if (this.index === 0) {
                    this.prevDis = true
                }
                this.nextDis = false
                for (let index = 0; index < this.allList.length; index++) {
                    const element = this.allList[index];
                    if (this.index == index) {
                        this.getInfo(element.id)
                    }
                }
            },
            next() {
                this.index++
                if (this.index === this.allList.length - 1) {
                    this.nextDis = true
                }
                this.prevDis = false
                for (let index = 0; index < this.allList.length; index++) {
                    const element = this.allList[index];
                    if (this.index == index) {
                        this.getInfo(element.id)
                    }
                }
            },
            getInfo(id) {
                request({
                    url: '/api/example/Fz_company_baseinfo_main/'+ id,
                    method: 'get'
                }).then(res => {
                    this.dataInfo(res.data)
                });
            },
            goBack() {
                this.visible = false
                this.$emit('refreshDataList', true)
            },
            changeData(model, index) {
                this.isEdit = false
                this.childIndex = index
                let modelAll = model.split("-");
                let faceMode = "";
                for (let i = 0; i < modelAll.length; i++) {
                    faceMode += modelAll[i];
                }
                for (let key in this.interfaceRes) {
                    if (key != faceMode) {
                        let faceReList = this.interfaceRes[key]
                        for (let i = 0; i < faceReList.length; i++) {
                            if (faceReList[i].relationField == model) {
                                let options = 'get' + key + 'Options';
                                if(this[options]){
                                    this[options]()
                                }
                                this.changeData(key, index)
                            }
                        }
                    }
                }
            },
            changeDataFormData(type, data, model,index,defaultValue) {
                if(!this.isEdit) {
                    if (type == 2) {
                        for (let i = 0; i < this.dataForm[data].length; i++) {
                            if (index == -1) {
                                this.dataForm[data][i][model] = defaultValue
                            } else if (index == i) {
                                this.dataForm[data][i][model] = defaultValue
                            }
                        }
                    } else {
                        this.dataForm[data] = defaultValue
                    }
                }
            },
            dataAll(){
            },
            clearData(){
                this.dataForm = JSON.parse(JSON.stringify(this.dataValueAll))
            },
            init(id,isDetail,allList) {
                this.prevDis = false
                this.nextDis = false
                this.allList = allList || []
                if (allList.length) {
                    this.index = this.allList.findIndex(item => item.id === id)
                    if (this.index == 0) {
                        this.prevDis = true
                    }
                    if (this.index == this.allList.length - 1) {
                        this.nextDis = true
                    }
                } else {
                    this.prevDis = true
                    this.nextDis = true
                }
                this.dataForm.id = id || 0;
                this.visible = true;
                this.$nextTick(() => {
                    if(this.dataForm.id){
                        this.loading = true
                        request({
                            url: '/api/example/Fz_company_baseinfo_main/'+this.dataForm.id,
                            method: 'get'
                        }).then(res => {
                            this.dataInfo(res.data)
                            this.loading = false
                        });
                    }else{
                        this.clearData()
                        this.initDefaultData()
                    }
                });
                this.$store.commit('generator/UPDATE_RELATION_DATA', {})
            },
            //初始化默认数据
            initDefaultData() {

            },
            // 表单提交
            dataFormSubmit(type) {
                this.dataFormSubmitType = type ? type : 0
                this.$refs['formRef'].validate((valid) => {
                    if (valid) {
                        this.request()
                    }
                })
            },
            request() {
                let _data =this.dataList()
                if (this.dataFormSubmitType == 2) {
                    this.continueBtnLoading = true
                } else {
                    this.btnLoading = true
                }
                if (!this.dataForm.id) {
                    request({
                        url: '/api/example/Fz_company_baseinfo_main',
                        method: 'post',
                        data: _data
                    }).then((res) => {
                        this.$message({
                            message: res.msg,
                            type: 'success',
                            duration: 1000,
                            onClose: () => {
                                if (this.dataFormSubmitType == 2) {
                                    this.$nextTick(() => {
                                        this.clearData()
                                        this.initDefaultData()
                                    })
                                    this.continueBtnLoading = false
                                    return
                                }
                                this.visible = false
                                this.btnLoading = false
                                this.$emit('refresh', true)
                            }
                        })
                    }).catch(()=>{
                        this.btnLoading = false
                        this.continueBtnLoading = false
                    })
                }else{
                    request({
                        url: '/api/example/Fz_company_baseinfo_main/'+this.dataForm.id,
                        method: 'PUT',
                        data: _data
                    }).then((res) => {
                        this.$message({
                            message: res.msg,
                            type: 'success',
                            duration: 1000,
                            onClose: () => {
                                if (this.dataFormSubmitType == 2) return this.continueBtnLoading = false
                                this.visible = false
                                this.btnLoading = false
                                this.$emit('refresh', true)
                            }
                        })
                    }).catch(()=>{
                        this.btnLoading = false
                        this.continueBtnLoading = false
                    })
                }
            },
            openSelectDialog(key) {
                this.currTableConf=this.addTableConf[key]
                this.currVmodel=key
                this.selectDialogVisible = true
                this.$nextTick(() => {
                    this.$refs.selectDialog.init()
                })
            },
            addForSelect(data) {
                for (let i = 0; i < data.length; i++) {
                    let t = data[i]
                    if(this['get'+this.currVmodel]){
                        this['get'+this.currVmodel](t)
                    }
                }
            },
            dateTime(timeRule, timeType, timeTarget, timeValueData, dataValue) {
                let timeDataValue = null;
                let timeValue = Number(timeValueData)
                if (timeRule) {
                    if (timeType == 1) {
                        timeDataValue = timeValue
                    } else if (timeType == 2) {
                        timeDataValue = dataValue
                    } else if (timeType == 3) {
                        timeDataValue = new Date().getTime()
                    } else if (timeType == 4) {
                        let previousDate = '';
                        if (timeTarget == 1 || timeTarget == 2) {
                            previousDate = getDateDay(timeTarget, timeType, timeValue)
                            timeDataValue = new Date(previousDate).getTime()
                        } else if (timeTarget == 3) {
                            previousDate = getBeforeData(timeValue)
                            timeDataValue = new Date(previousDate).getTime()
                        } else {
                            timeDataValue = getBeforeTime(timeTarget, timeValue).getTime()
                        }
                    } else if (timeType == 5) {
                        let previousDate = '';
                        if (timeTarget == 1 || timeTarget == 2) {
                            previousDate = getDateDay(timeTarget, timeType, timeValue)
                            timeDataValue = new Date(previousDate).getTime()
                        } else if (timeTarget == 3) {
                            previousDate = getLaterData(timeValue)
                            timeDataValue = new Date(previousDate).getTime()
                        } else {
                            timeDataValue = getLaterTime(timeTarget, timeValue).getTime()
                        }
                    }
                }
                return timeDataValue;
            },
            time(timeRule, timeType, timeTarget, timeValue, formatType, dataValue) {
                let format = formatType == 'HH:mm' ? 'HH:mm:00' : formatType
                let timeDataValue = null
                if (timeRule) {
                    if (timeType == 1) {
                        timeDataValue = timeValue || '00:00:00'
                        if (timeDataValue.split(':').length == 3) {
                            timeDataValue = timeDataValue
                        } else {
                            timeDataValue = timeDataValue + ':00'
                        }
                    } else if (timeType == 2) {
                        timeDataValue = dataValue
                    } else if (timeType == 3) {
                        timeDataValue = this.jnpf.toDate(new Date(), format)
                    } else if (timeType == 4) {
                        let previousDate = '';
                        previousDate = getBeforeTime(timeTarget, timeValue)
                        timeDataValue = this.jnpf.toDate(previousDate, format)
                    } else if (timeType == 5) {
                        let previousDate = '';
                        previousDate = getLaterTime(timeTarget, timeValue)
                        timeDataValue = this.jnpf.toDate(previousDate, format)
                    }
                }
                return timeDataValue;
            },
            dataList(){
                var _data = this.dataForm;
                return _data;
            },
            dataInfo(dataAll){
                let _dataAll =dataAll
                this.dataForm = _dataAll
                this.isEdit = true
                this.dataAll()
                this.childIndex=-1
            },
        },
    }

</script>
